home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 June / PCWorld_2007-06_cd.bin / v cisle / wua / WindowsVistaUpgradeAdvisor.msi / _2E273B4721FD61938FC8C146C395840E / BktOutputTransform.xsl < prev    next >
Extensible Markup Language  |  2007-02-06  |  72KB  |  1,546 lines

  1. <?xml version="1.0"?>
  2. <!-- ==================================================================== -->
  3. <!-- ============ Copyright (c) 2006  Microsoft Corporation ============= -->
  4. <!-- ==================================================================== -->
  5.  
  6.  
  7.  
  8.  
  9. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
  10. <xsl:output method="xml" indent="yes" />
  11.  
  12.  
  13.  
  14.  
  15. <!-- ============================================ -->
  16. <!-- ========== VARIABLE SECTION START ========== -->
  17. <!-- ============================================ -->
  18. <xsl:variable name="NEWLINE">
  19. <xsl:text> </xsl:text>
  20. </xsl:variable>
  21.  
  22. <xsl:variable name="LOWERCASE" select="'abcdefghijklmnopqrstuvwxyz'" />
  23. <xsl:variable name="UPPERCASE" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
  24. <!-- ========================================== -->
  25. <!-- ========== VARIABLE SECTION END ========== -->
  26. <!-- ========================================== -->
  27.  
  28.  
  29.  
  30.  
  31. <xsl:template match="/">
  32. <Log>
  33. <!-- ============================== -->
  34. <!-- ==== SystemList Transform ==== -->
  35. <!-- ============================== -->
  36. <xsl:if test="//SystemList">
  37.     <xsl:call-template name="CommonSystemList" />
  38. </xsl:if>
  39.  
  40.  
  41. <!-- ================================ -->
  42. <!-- ==== Intermediate Transform ==== -->
  43. <!-- ================================ -->
  44. <xsl:if test="//SoftwareList/Application">
  45.     <xsl:call-template name="IntermediateSoftwareList" />
  46. </xsl:if>
  47.  
  48.  
  49. <!-- ========================= -->
  50. <!-- ==== Final Transform ==== -->
  51. <!-- ========================= -->
  52. <xsl:if test="//SoftwareList/FinalOutput/Application">
  53.     <xsl:call-template name="FinalSoftwareList" />
  54. </xsl:if>
  55.  
  56.  
  57. </Log>
  58. </xsl:template>
  59.  
  60.  
  61.  
  62.  
  63. <!-- ===================================================== -->
  64. <!-- ========= SoftwareList (Intermediate) START ========= -->
  65. <!-- ===================================================== -->
  66. <xsl:template name="IntermediateSoftwareList">
  67. <SoftwareList>
  68.     <xsl:for-each select="//SoftwareList/Application">
  69.         <!-- =================================================================== -->
  70.         <!-- == Exclude any of the following:                                 == -->
  71.         <!-- ==   OS component applications                                   == -->
  72.         <!-- ==   Service application, unless inferred from ARP               == -->
  73.         <!-- ==   Applications whose name contains 'Internet Explorer'        == -->
  74.         <!-- ==     unless the name is 'Microsoft Internet Explorer Logging'  == -->
  75.         <!-- =================================================================== -->
  76.         <xsl:if test="( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), ' OPERATING SYSTEM')    and
  77.                         contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'WINDOWS'))                      )  and
  78.                       ( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'INTERNET EXPLORER'))   or
  79.                         contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'TOOLBAR')                  or
  80.                         translate(@Name,$LOWERCASE,$UPPERCASE)='MICROSOFT INTERNET EXPLORER LOGGING'      )  and
  81.                       ( not(./@OsComponent)                                                               )">
  82.             <xsl:copy>
  83.                 <xsl:for-each select="@*">
  84.                     <xsl:copy />
  85.                 </xsl:for-each>
  86.  
  87.                 <xsl:call-template name="GetIndicator" />
  88.                 <xsl:call-template name="GetStaticPrptyAndDynamicData" />
  89.  
  90.             </xsl:copy>
  91.         </xsl:if>
  92.     </xsl:for-each>
  93.  
  94. </SoftwareList>
  95. </xsl:template>
  96. <!-- =================================================== -->
  97. <!-- ========= SoftwareList (Intermediate) END ========= -->
  98. <!-- =================================================== -->
  99.  
  100.  
  101.  
  102.  
  103. <!-- ============================================== -->
  104. <!-- ========= SoftwareList (Final) START ========= -->
  105. <!-- ============================================== -->
  106. <xsl:template name="FinalSoftwareList">
  107. <EditScript>
  108.     <xsl:call-template name="GetUpdatedApplications" />
  109.     <xsl:call-template name="GetInsertedApplications" />
  110.     <xsl:call-template name="GetDeletedApplications" />
  111. </EditScript>
  112. <SoftwareList>
  113.     <xsl:for-each select="//SoftwareList/FinalOutput/Application[@State!='3']">
  114.         <xsl:if test="( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), ' OPERATING SYSTEM')    and
  115.                         contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'WINDOWS'))                      )  and
  116.                       ( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'INTERNET EXPLORER'))   or
  117.                         contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'TOOLBAR')                  or
  118.                         translate(@Name,$LOWERCASE,$UPPERCASE)='MICROSOFT INTERNET EXPLORER LOGGING'      )  and
  119.                       ( not(./@OsComponent)                                                               )">
  120.             <xsl:copy>
  121.                 <xsl:for-each select="@*">
  122.                     <xsl:copy />
  123.                 </xsl:for-each>
  124.  
  125.                 <xsl:call-template name="GetIndicator" />
  126.                 <xsl:call-template name="GetStaticPrptyAndDynamicData" />
  127.  
  128.             </xsl:copy>
  129.         </xsl:if>
  130.     </xsl:for-each>
  131. </SoftwareList>
  132. </xsl:template>
  133. <!-- ============================================ -->
  134. <!-- ========= SoftwareList (Final) END ========= -->
  135. <!-- ============================================ -->
  136.  
  137.  
  138.  
  139.  
  140. <!-- =================================== -->
  141. <!-- ==== Copy Updated Applications ==== -->
  142. <!-- =================================== -->
  143. <xsl:template name="GetUpdatedApplications">
  144. <Update>
  145.     <xsl:for-each select="//SoftwareList/FinalOutput/Application[@State='1']"><!-- Update (State=1) -->
  146.         <xsl:if test="( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), ' OPERATING SYSTEM')    and
  147.                         contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'WINDOWS'))                      )  and
  148.                       ( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'INTERNET EXPLORER'))   or
  149.                         contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'TOOLBAR')                  or
  150.                         translate(@Name,$LOWERCASE,$UPPERCASE)='MICROSOFT INTERNET EXPLORER LOGGING'      )  and
  151.                       ( not(./@OsComponent)                                                               )">
  152.             <xsl:copy>
  153.                 <xsl:for-each select="@*">
  154.                     <xsl:copy />
  155.                 </xsl:for-each>
  156.  
  157.                 <xsl:call-template name="GetIndicator" />
  158.                 <xsl:call-template name="GetStaticPrptyAndDynamicData" />
  159.  
  160.             </xsl:copy>
  161.         </xsl:if>
  162.     </xsl:for-each>
  163. </Update>
  164. </xsl:template>
  165.  
  166.  
  167. <!-- ==================================== -->
  168. <!-- ==== Copy Inserted Applications ==== -->
  169. <!-- ==================================== -->
  170. <xsl:template name="GetInsertedApplications">
  171. <Insert>
  172.     <xsl:for-each select="//SoftwareList/FinalOutput/Application[@State='2']"><!-- Insert (State=2) -->
  173.         <xsl:if test="( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), ' OPERATING SYSTEM')    and
  174.                         contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'WINDOWS'))                      )  and
  175.                       ( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'INTERNET EXPLORER'))   or
  176.                         contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'TOOLBAR')                  or
  177.                         translate(@Name,$LOWERCASE,$UPPERCASE)='MICROSOFT INTERNET EXPLORER LOGGING'      )  and
  178.                       ( not(./@OsComponent)                                                               )">
  179.             <xsl:copy>
  180.                 <xsl:for-each select="@*">
  181.                     <xsl:copy />
  182.                 </xsl:for-each>
  183.  
  184.                 <xsl:call-template name="GetIndicator" />
  185.                 <xsl:call-template name="GetStaticPrptyAndDynamicData" />
  186.  
  187.             </xsl:copy>
  188.         </xsl:if>
  189.     </xsl:for-each>
  190. </Insert>
  191. </xsl:template>
  192.  
  193.  
  194. <!-- =================================== -->
  195. <!-- ==== Copy Deleted Applications ==== -->
  196. <!-- =================================== -->
  197. <xsl:template name="GetDeletedApplications">
  198. <Delete>
  199.     <xsl:for-each select="//SoftwareList/FinalOutput/Application[@State='3']"><!-- Delete (State=3) -->
  200.         <xsl:if test="( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), ' OPERATING SYSTEM')    and
  201.                         contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'WINDOWS'))                    )  and
  202.                       ( not(contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'INTERNET EXPLORER'))   or
  203.                         contains(translate(@Name,$LOWERCASE,$UPPERCASE), 'TOOLBAR')                  or
  204.                         translate(@Name,$LOWERCASE,$UPPERCASE)='MICROSOFT INTERNET EXPLORER LOGGING'    )  and
  205.                       ( not(./@OsComponent)                                                             )">
  206.             <xsl:copy>
  207.                 <xsl:for-each select="@*">
  208.                     <xsl:copy />
  209.                 </xsl:for-each>
  210.  
  211.                 <xsl:call-template name="GetIndicator" />
  212.                 <xsl:call-template name="GetStaticPrptyAndDynamicData" />
  213.  
  214.             </xsl:copy>
  215.         </xsl:if>
  216.     </xsl:for-each>
  217. </Delete>
  218. </xsl:template>
  219.  
  220.  
  221.  
  222.  
  223. <!-- =============================== -->
  224. <!-- ==== Copy Indicators START ==== -->
  225. <!-- =============================== -->
  226. <xsl:template name="GetIndicator">
  227. <Indicators>
  228.     <!-- ====================================== -->
  229.     <!-- ====== Assume flat element list ====== -->
  230.     <!-- ====================================== -->
  231.  
  232.     <!-- ================================ -->
  233.     <!-- ============ Msi =============== -->
  234.     <!-- ================================ -->
  235.     <xsl:call-template name="CopyIndicator">
  236.         <xsl:with-param name="TYPE" select="'Msi'" />
  237.         <xsl:with-param name="GROUP_NAME" select="'MsiIndicators'" />
  238.     </xsl:call-template>
  239.  
  240.  
  241.     <!-- ================================ -->
  242.     <!-- ========== Manifest ============ -->
  243.     <!-- ================================ -->
  244.     <xsl:call-template name="CopyIndicator">
  245.         <xsl:with-param name="TYPE" select="'Manifest'" />
  246.         <xsl:with-param name="GROUP_NAME" select="'ManifestIndicators'" />
  247.     </xsl:call-template>
  248.  
  249.  
  250.     <!-- ================================ -->
  251.     <!-- ====== WindowsComponent ======== -->
  252.     <!-- ================================ -->
  253.     <xsl:call-template name="CopyIndicator">
  254.         <xsl:with-param name="TYPE" select="'WindowsComponent'" />
  255.         <xsl:with-param name="GROUP_NAME" select="'WindowsComponentIndicators'" />
  256.     </xsl:call-template>
  257.  
  258.  
  259.     <!-- ================================ -->
  260.     <!-- ==== ServiceControlManager ===== -->
  261.     <!-- ================================ -->
  262.     <xsl:call-template name="CopyIndicator">
  263.         <xsl:with-param name="TYPE" select="'ServiceControlManager'" />
  264.         <xsl:with-param name="GROUP_NAME" select="'ServiceControlManagerIndicators'" />
  265.     </xsl:call-template>
  266.  
  267.  
  268.     <!-- ================================ -->
  269.     <!-- ========== Directory =========== -->
  270.     <!-- ================================ -->
  271.     <xsl:call-template name="CopyIndicator">
  272.         <xsl:with-param name="TYPE" select="'Directory'" />
  273.         <xsl:with-param name="GROUP_NAME" select="'DirectoryIndicators'" />
  274.     </xsl:call-template>
  275.  
  276.  
  277.     <!-- ================================ -->
  278.     <!-- ====== AddRemoveProgram ======== -->
  279.     <!-- ================================ -->
  280.     <xsl:call-template name="CopyIndicator">
  281.         <xsl:with-param name="TYPE" select="'AddRemoveProgram'" />
  282.         <xsl:with-param name="GROUP_NAME" select="'AddRemoveProgramIndicators'" />
  283.     </xsl:call-template>
  284.  
  285.  
  286.     <!-- ================================ -->
  287.     <!-- ============ Shell ============= -->
  288.     <!-- ================================ -->
  289.     <xsl:call-template name="CopyIndicator">
  290.         <xsl:with-param name="TYPE" select="'Shell'" />
  291.         <xsl:with-param name="GROUP_NAME" select="'ShellIndicators'" />
  292.     </xsl:call-template>
  293.  
  294.  
  295.     <!-- ================================ -->
  296.     <!-- =========== AppPath ============ -->
  297.     <!-- ================================ -->
  298.     <xsl:call-template name="CopyIndicator">
  299.         <xsl:with-param name="TYPE" select="'AppPath'" />
  300.         <xsl:with-param name="GROUP_NAME" select="'AppPathIndicators'" />
  301.     </xsl:call-template>
  302.  
  303.  
  304.     <!-- ================================ -->
  305.     <!-- =========== Registry =========== -->
  306.     <!-- ================================ -->
  307.     <xsl:call-template name="CopyIndicator">
  308.         <xsl:with-param name="TYPE" select="'Registry'" />
  309.         <xsl:with-param name="GROUP_NAME" select="'RegistryIndicators'" />
  310.     </xsl:call-template>
  311.  
  312.  
  313.     <!-- ================================ -->
  314.     <!-- ========== PathEnvVar ========== -->
  315.     <!-- ================================ -->
  316.     <xsl:call-template name="CopyIndicator">
  317.         <xsl:with-param name="TYPE" select="'PathEnvironmentVariable'" />
  318.         <xsl:with-param name="GROUP_NAME" select="'PathEnvVarIndicators'" />
  319.     </xsl:call-template>
  320.  
  321.  
  322.     <!-- ================================ -->
  323.     <!-- =========== FileExt ============ -->
  324.     <!-- ================================ -->
  325.     <xsl:call-template name="CopyIndicator">
  326.         <xsl:with-param name="TYPE" select="'FileExtensionHandler'" />
  327.         <xsl:with-param name="GROUP_NAME" select="'FileExtIndicators'" />
  328.     </xsl:call-template>
  329.  
  330.  
  331. </Indicators>
  332. </xsl:template>
  333. <!-- ============================= -->
  334. <!-- ==== Copy Indicators END ==== -->
  335. <!-- ============================= -->
  336.  
  337.  
  338.  
  339.  
  340. <!-- =========================================================== -->
  341. <!-- ==== Copy StaticProperties and DynamicProperties START ==== -->
  342. <!-- =========================================================== -->
  343. <xsl:template name="GetStaticPrptyAndDynamicData">
  344. <StaticProperties>
  345.     <!-- ====================================== -->
  346.     <!-- ====== Assume flat element list ====== -->
  347.     <!-- ====================================== -->
  348.  
  349.     <!-- ============================================== -->
  350.     <!-- ================== File START ================ -->
  351.     <!-- ============================================== -->
  352.     <Files>
  353.     <xsl:call-template name="CopyStaticPrptyAndDynamicData">
  354.         <xsl:with-param name="TYPE" select="'File'" />
  355.     </xsl:call-template>
  356.     </Files>
  357.  
  358.  
  359. </StaticProperties>
  360. </xsl:template>
  361. <!-- =================================== -->
  362. <!-- ==== Copy StaticProperties END ==== -->
  363. <!-- =================================== -->
  364.  
  365.  
  366.  
  367.  
  368. <!-- ====================================== -->
  369. <!-- ==== Copy Indicator Generic START ==== -->
  370. <!-- ====================================== -->
  371. <xsl:template name="CopyIndicator">
  372.     <xsl:param name="TYPE" />
  373.     <xsl:param name="GROUP_NAME" />
  374.  
  375.     <xsl:if test="./StaticProperty[@Type=$TYPE]">
  376.         <xsl:element name="{$GROUP_NAME}">
  377.  
  378.             <xsl:for-each select="StaticProperty[@Type=$TYPE]">
  379.                 <xsl:variable name="ELEMENTNAME" select="./@Type" />
  380.                 <xsl:variable name="TYPE_ATTR_NAME" select="name(./@Type)" />
  381.                 <xsl:element name="{$ELEMENTNAME}">
  382.                     <xsl:for-each select="./@*">
  383.                         <xsl:if test="name()!=$TYPE_ATTR_NAME">
  384.                             <xsl:copy />
  385.                         </xsl:if>
  386.                     </xsl:for-each>
  387.                 </xsl:element>
  388.             </xsl:for-each>
  389.  
  390.         </xsl:element>
  391.     </xsl:if>
  392. </xsl:template>
  393. <!-- ==================================== -->
  394. <!-- ==== Copy Indicator Generic END ==== -->
  395. <!-- ==================================== -->
  396.  
  397.  
  398.  
  399.  
  400. <!-- ============================================================ -->
  401. <!-- ==== Copy StaticProperty and Dynamic Data Generic START ==== -->
  402. <!-- ============================================================ -->
  403. <xsl:template name="CopyStaticPrptyAndDynamicData">
  404.     <xsl:param name="TYPE" />
  405.  
  406.     <xsl:if test="./StaticProperty[@Type=$TYPE]">
  407.  
  408.             <xsl:for-each select="StaticProperty[@Type=$TYPE]">
  409.                 <xsl:variable name="ELEMENTNAME" select="./@Type" />
  410.                 <xsl:variable name="TYPE_ATTR_NAME" select="name(./@Type)" />
  411.                 <xsl:element name="{$ELEMENTNAME}">
  412.                     <xsl:for-each select="./@*">
  413.                         <xsl:if test="name()!=$TYPE_ATTR_NAME">
  414.                             <xsl:copy />
  415.                         </xsl:if>
  416.                     </xsl:for-each>
  417.  
  418.  
  419. <!-- ============================================== -->
  420. <!-- <<<<<< Shift to left for easier reading <<<<<< -->
  421. <!-- ============================================== -->
  422.  
  423. <!-- ============================================== -->
  424. <!-- ============ DynamicProperty START =========== -->
  425. <!-- ============================================== -->
  426. <xsl:if test="DynamicProperty">
  427.     <DynamicProperties>
  428.  
  429.  
  430.         <!-- ============================================== -->
  431.         <!-- ============ FileOpenedList START ============ -->
  432.         <!-- ============================================== -->
  433.         <xsl:if test="DynamicProperty[@Type='FileOpen']">
  434.             <FileOpenedList>
  435.                 <xsl:for-each select="DynamicProperty[@Type='FileOpen']">
  436.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  437.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  438.                     <xsl:element name="{$ELEMENTNAME2}">
  439.                         <xsl:for-each select="./@*">
  440.                             <xsl:if test="name()!=$TYPE2">
  441.                                 <xsl:copy />
  442.                             </xsl:if>
  443.                         </xsl:for-each>
  444.                     </xsl:element>
  445.                 </xsl:for-each>
  446.             </FileOpenedList>
  447.         </xsl:if>
  448.         <!-- ============================================== -->
  449.         <!-- ============= FileOpenedList END ============= -->
  450.         <!-- ============================================== -->
  451.  
  452.  
  453.         <!-- ============================================== -->
  454.         <!-- ============= IeceEventList START ============ -->
  455.         <!-- ============================================== -->
  456.         <xsl:if test="DynamicProperty[contains(string(@Type), 'Iece')]">
  457.             <IeceEventList>
  458.  
  459.                 <!-- ============================================== -->
  460.                 <!-- ========== IeceMimeHandling01 START ========== -->
  461.                 <!-- ============================================== -->
  462.                 <xsl:for-each select="DynamicProperty[@Type='IeceMimeHandling01']">
  463.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  464.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  465.                     <xsl:element name="{$ELEMENTNAME2}">
  466.                         <xsl:for-each select="./@*">
  467.                             <xsl:if test="name()!=$TYPE2">
  468.                                 <xsl:copy />
  469.                             </xsl:if>
  470.                         </xsl:for-each>
  471.                     </xsl:element>
  472.                 </xsl:for-each>
  473.  
  474.  
  475.                 <!-- ============================================== -->
  476.                 <!-- ========== IeceMimeHandling02 START ========== -->
  477.                 <!-- ============================================== -->
  478.                 <xsl:for-each select="DynamicProperty[@Type='IeceMimeHandling02']">
  479.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  480.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  481.                     <xsl:element name="{$ELEMENTNAME2}">
  482.                         <xsl:for-each select="./@*">
  483.                             <xsl:if test="name()!=$TYPE2">
  484.                                 <xsl:copy />
  485.                             </xsl:if>
  486.                         </xsl:for-each>
  487.                     </xsl:element>
  488.                 </xsl:for-each>
  489.  
  490.  
  491.                 <!-- ============================================== -->
  492.                 <!-- ========== IeceMimeHandling03 START ========== -->
  493.                 <!-- ============================================== -->
  494.                 <xsl:for-each select="DynamicProperty[@Type='IeceMimeHandling03']">
  495.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  496.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  497.                     <xsl:element name="{$ELEMENTNAME2}">
  498.                         <xsl:for-each select="./@*">
  499.                             <xsl:if test="name()!=$TYPE2">
  500.                                 <xsl:copy />
  501.                             </xsl:if>
  502.                         </xsl:for-each>
  503.                     </xsl:element>
  504.                 </xsl:for-each>
  505.  
  506.  
  507.                 <!-- ============================================== -->
  508.                 <!-- ======== IeceWindowRestrictions01 START ====== -->
  509.                 <!-- ============================================== -->
  510.                 <xsl:for-each select="DynamicProperty[@Type='IeceWindowRestrictions01']">
  511.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  512.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  513.                     <xsl:element name="{$ELEMENTNAME2}">
  514.                         <xsl:for-each select="./@*">
  515.                             <xsl:if test="name()!=$TYPE2">
  516.                                 <xsl:copy />
  517.                             </xsl:if>
  518.                         </xsl:for-each>
  519.                     </xsl:element>
  520.                 </xsl:for-each>
  521.  
  522.  
  523.                 <!-- ============================================== -->
  524.                 <!-- ============ IeceZoneElev01 START ============ -->
  525.                 <!-- ============================================== -->
  526.                 <xsl:for-each select="DynamicProperty[@Type='IeceZoneElev01']">
  527.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  528.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  529.                     <xsl:element name="{$ELEMENTNAME2}">
  530.                         <xsl:for-each select="./@*">
  531.                             <xsl:if test="name()!=$TYPE2">
  532.                                 <xsl:copy />
  533.                             </xsl:if>
  534.                         </xsl:for-each>
  535.                     </xsl:element>
  536.                 </xsl:for-each>
  537.  
  538.  
  539.                 <!-- ============================================== -->
  540.                 <!-- =========== IeceBinaryBhvr01 START =========== -->
  541.                 <!-- ============================================== -->
  542.                 <xsl:for-each select="DynamicProperty[@Type='IeceBinaryBhvr01']">
  543.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  544.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  545.                     <xsl:element name="{$ELEMENTNAME2}">
  546.                         <xsl:for-each select="./@*">
  547.                             <xsl:if test="name()!=$TYPE2">
  548.                                 <xsl:copy />
  549.                             </xsl:if>
  550.                         </xsl:for-each>
  551.                     </xsl:element>
  552.                 </xsl:for-each>
  553.  
  554.  
  555.                 <!-- ============================================== -->
  556.                 <!-- ============ IeceObjCache01 START ============ -->
  557.                 <!-- ============================================== -->
  558.                 <xsl:for-each select="DynamicProperty[@Type='IeceObjCache01']">
  559.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  560.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  561.                     <xsl:element name="{$ELEMENTNAME2}">
  562.                         <xsl:for-each select="./@*">
  563.                             <xsl:if test="name()!=$TYPE2">
  564.                                 <xsl:copy />
  565.                             </xsl:if>
  566.                         </xsl:for-each>
  567.                     </xsl:element>
  568.                 </xsl:for-each>
  569.  
  570.  
  571.                 <!-- ============================================== -->
  572.                 <!-- ========== IeceActiveXBlock01 START ========== -->
  573.                 <!-- ============================================== -->
  574.                 <xsl:for-each select="DynamicProperty[@Type='IeceActiveXBlock01']">
  575.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  576.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  577.                     <xsl:element name="{$ELEMENTNAME2}">
  578.                         <xsl:for-each select="./@*">
  579.                             <xsl:if test="name()!=$TYPE2">
  580.                                 <xsl:copy />
  581.                             </xsl:if>
  582.                         </xsl:for-each>
  583.                     </xsl:element>
  584.                 </xsl:for-each>
  585.  
  586.  
  587.                 <!-- ============================================== -->
  588.                 <!-- ========== IeceActiveXBlock02 START ========== -->
  589.                 <!-- ============================================== -->
  590.                 <xsl:for-each select="DynamicProperty[@Type='IeceActiveXBlock02']">
  591.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  592.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  593.                     <xsl:element name="{$ELEMENTNAME2}">
  594.                         <xsl:for-each select="./@*">
  595.                             <xsl:if test="name()!=$TYPE2">
  596.                                 <xsl:copy />
  597.                             </xsl:if>
  598.                         </xsl:for-each>
  599.                     </xsl:element>
  600.                 </xsl:for-each>
  601.  
  602.  
  603.                 <!-- ============================================== -->
  604.                 <!-- ========== IeceActiveXBlock03 START ========== -->
  605.                 <!-- ============================================== -->
  606.                 <xsl:for-each select="DynamicProperty[@Type='IeceActiveXBlock03']">
  607.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  608.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  609.                     <xsl:element name="{$ELEMENTNAME2}">
  610.                         <xsl:for-each select="./@*">
  611.                             <xsl:if test="name()!=$TYPE2">
  612.                                 <xsl:copy />
  613.                             </xsl:if>
  614.                         </xsl:for-each>
  615.                     </xsl:element>
  616.                 </xsl:for-each>
  617.  
  618.  
  619.                 <!-- ============================================== -->
  620.                 <!-- ============= IecePUBlock01 START ============ -->
  621.                 <!-- ============================================== -->
  622.                 <xsl:for-each select="DynamicProperty[@Type='IecePUBlock01']">
  623.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  624.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  625.                     <xsl:element name="{$ELEMENTNAME2}">
  626.                         <xsl:for-each select="./@*">
  627.                             <xsl:if test="name()!=$TYPE2">
  628.                                 <xsl:copy />
  629.                             </xsl:if>
  630.                         </xsl:for-each>
  631.                     </xsl:element>
  632.                 </xsl:for-each>
  633.  
  634.  
  635.                 <!-- ============================================== -->
  636.                 <!-- ========== IeceDownloadBlock01 START ========= -->
  637.                 <!-- ============================================== -->
  638.                 <xsl:for-each select="DynamicProperty[@Type='IeceDownloadBlock01']">
  639.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  640.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  641.                     <xsl:element name="{$ELEMENTNAME2}">
  642.                         <xsl:for-each select="./@*">
  643.                             <xsl:if test="name()!=$TYPE2">
  644.                                 <xsl:copy />
  645.                             </xsl:if>
  646.                         </xsl:for-each>
  647.                     </xsl:element>
  648.                 </xsl:for-each>
  649.  
  650.  
  651.                 <!-- ============================================== -->
  652.                 <!-- ============== IeceLMZL01 START ============== -->
  653.                 <!-- ============================================== -->
  654.                 <xsl:for-each select="DynamicProperty[@Type='IeceLMZL01']">
  655.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  656.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  657.                     <xsl:element name="{$ELEMENTNAME2}">
  658.                         <xsl:for-each select="./@*">
  659.                             <xsl:if test="name()!=$TYPE2">
  660.                                 <xsl:copy />
  661.                             </xsl:if>
  662.                         </xsl:for-each>
  663.                     </xsl:element>
  664.                 </xsl:for-each>
  665.  
  666.  
  667.                 <!-- ============================================== -->
  668.                 <!-- ======= IeceURLCreationFailure01 START ======= -->
  669.                 <!-- ============================================== -->
  670.                 <xsl:for-each select="DynamicProperty[@Type='IeceURLCreationFailure01']">
  671.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  672.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  673.                     <xsl:element name="{$ELEMENTNAME2}">
  674.                         <xsl:for-each select="./@*">
  675.                             <xsl:if test="name()!=$TYPE2">
  676.                                 <xsl:copy />
  677.                             </xsl:if>
  678.                         </xsl:for-each>
  679.                     </xsl:element>
  680.                 </xsl:for-each>
  681.  
  682.  
  683.                 <!-- ============================================== -->
  684.                 <!-- ========== IeceIDNNavigation01 START ========= -->
  685.                 <!-- ============================================== -->
  686.                 <xsl:for-each select="DynamicProperty[@Type='IeceIDNNavigation01']">
  687.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  688.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  689.                     <xsl:element name="{$ELEMENTNAME2}">
  690.                         <xsl:for-each select="./@*">
  691.                             <xsl:if test="name()!=$TYPE2">
  692.                                 <xsl:copy />
  693.                             </xsl:if>
  694.                         </xsl:for-each>
  695.                     </xsl:element>
  696.                 </xsl:for-each>
  697.  
  698.  
  699.                 <!-- ============================================== -->
  700.                 <!-- =========== IeceSSLNavBlock01 START ========== -->
  701.                 <!-- ============================================== -->
  702.                 <xsl:for-each select="DynamicProperty[@Type='IeceSSLNavBlock01']">
  703.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  704.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  705.                     <xsl:element name="{$ELEMENTNAME2}">
  706.                         <xsl:for-each select="./@*">
  707.                             <xsl:if test="name()!=$TYPE2">
  708.                                 <xsl:copy />
  709.                             </xsl:if>
  710.                         </xsl:for-each>
  711.                     </xsl:element>
  712.                 </xsl:for-each>
  713.  
  714.  
  715.                 <!-- ============================================== -->
  716.                 <!-- ========= IeceScriptUrlBlock01 START ========= -->
  717.                 <!-- ============================================== -->
  718.                 <xsl:for-each select="DynamicProperty[@Type='IeceScriptUrlBlock01']">
  719.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  720.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  721.                     <xsl:element name="{$ELEMENTNAME2}">
  722.                         <xsl:for-each select="./@*">
  723.                             <xsl:if test="name()!=$TYPE2">
  724.                                 <xsl:copy />
  725.                             </xsl:if>
  726.                         </xsl:for-each>
  727.                     </xsl:element>
  728.                 </xsl:for-each>
  729.  
  730.  
  731.                 <!-- ============================================== -->
  732.                 <!-- ========= IeceScriptUrlBlock02 START ========= -->
  733.                 <!-- ============================================== -->
  734.                 <xsl:for-each select="DynamicProperty[@Type='IeceScriptUrlBlock02']">
  735.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  736.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  737.                     <xsl:element name="{$ELEMENTNAME2}">
  738.                         <xsl:for-each select="./@*">
  739.                             <xsl:if test="name()!=$TYPE2">
  740.                                 <xsl:copy />
  741.                             </xsl:if>
  742.                         </xsl:for-each>
  743.                     </xsl:element>
  744.                 </xsl:for-each>
  745.  
  746.  
  747.                 <!-- ============================================== -->
  748.                 <!-- ======== IeceAntiphishingBlock01 START ======= -->
  749.                 <!-- ============================================== -->
  750.                 <xsl:for-each select="DynamicProperty[@Type='IeceAntiphishingBlock01']">
  751.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  752.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  753.                     <xsl:element name="{$ELEMENTNAME2}">
  754.                         <xsl:for-each select="./@*">
  755.                             <xsl:if test="name()!=$TYPE2">
  756.                                 <xsl:copy />
  757.                             </xsl:if>
  758.                         </xsl:for-each>
  759.                     </xsl:element>
  760.                 </xsl:for-each>
  761.  
  762.  
  763.                 <!-- ============================================== -->
  764.                 <!-- ========== IeceManageAddOns01 START ========== -->
  765.                 <!-- ============================================== -->
  766.                 <xsl:for-each select="DynamicProperty[@Type='IeceManageAddOns01']">
  767.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  768.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  769.                     <xsl:element name="{$ELEMENTNAME2}">
  770.                         <xsl:for-each select="./@*">
  771.                             <xsl:if test="name()!=$TYPE2">
  772.                                 <xsl:copy />
  773.                             </xsl:if>
  774.                         </xsl:for-each>
  775.                     </xsl:element>
  776.                 </xsl:for-each>
  777.  
  778.  
  779.                 <!-- ============================================== -->
  780.                 <!-- ========= IeceProtectedMode01 START ========== -->
  781.                 <!-- ============================================== -->
  782.                 <xsl:for-each select="DynamicProperty[@Type='IeceProtectedMode01']">
  783.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  784.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  785.                     <xsl:element name="{$ELEMENTNAME2}">
  786.                         <xsl:for-each select="./@*">
  787.                             <xsl:if test="name()!=$TYPE2">
  788.                                 <xsl:copy />
  789.                             </xsl:if>
  790.                         </xsl:for-each>
  791.                     </xsl:element>
  792.                 </xsl:for-each>
  793.  
  794.  
  795.                 <!-- ============================================== -->
  796.                 <!-- ===== IeceSubframeNavigateBlock01 START ====== -->
  797.                 <!-- ============================================== -->
  798.                 <xsl:for-each select="DynamicProperty[@Type='IeceSubframeNavigateBlock01']">
  799.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  800.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  801.                     <xsl:element name="{$ELEMENTNAME2}">
  802.                         <xsl:for-each select="./@*">
  803.                             <xsl:if test="name()!=$TYPE2">
  804.                                 <xsl:copy />
  805.                             </xsl:if>
  806.                         </xsl:for-each>
  807.                     </xsl:element>
  808.                 </xsl:for-each>
  809.  
  810.  
  811.                 <!-- ============================================== -->
  812.                 <!-- === IeceCreateURLMonikerDifference01 START === -->
  813.                 <!-- ============================================== -->
  814.                 <xsl:for-each select="DynamicProperty[@Type='IeceCreateURLMonikerDifference01']">
  815.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  816.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  817.                     <xsl:element name="{$ELEMENTNAME2}">
  818.                         <xsl:for-each select="./@*">
  819.                             <xsl:if test="name()!=$TYPE2">
  820.                                 <xsl:copy />
  821.                             </xsl:if>
  822.                         </xsl:for-each>
  823.                     </xsl:element>
  824.                 </xsl:for-each>
  825.  
  826.  
  827.                 <!-- ============================================== -->
  828.                 <!-- ============= IeceCSSFixes01 START ============ -->
  829.                 <!-- ============================================== -->
  830.                 <xsl:for-each select="DynamicProperty[@Type='IeceCSSFixes01']">
  831.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  832.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  833.                     <xsl:element name="{$ELEMENTNAME2}">
  834.                         <xsl:for-each select="./@*">
  835.                             <xsl:if test="name()!=$TYPE2">
  836.                                 <xsl:copy />
  837.                             </xsl:if>
  838.                         </xsl:for-each>
  839.                     </xsl:element>
  840.                 </xsl:for-each>
  841.  
  842.  
  843.                 <!-- ============================================== -->
  844.                 <!-- ====== IeceUIPIExtensionBlocked01 START ====== -->
  845.                 <!-- ============================================== -->
  846.                 <xsl:for-each select="DynamicProperty[@Type='IeceUIPIExtensionBlocked01']">
  847.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  848.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  849.                     <xsl:element name="{$ELEMENTNAME2}">
  850.                         <xsl:for-each select="./@*">
  851.                             <xsl:if test="name()!=$TYPE2">
  852.                                 <xsl:copy />
  853.                             </xsl:if>
  854.                         </xsl:for-each>
  855.                     </xsl:element>
  856.                 </xsl:for-each>
  857.  
  858.  
  859.             </IeceEventList>
  860.         </xsl:if>
  861.         <!-- ============================================== -->
  862.         <!-- ============== IeceEventList END ============= -->
  863.         <!-- ============================================== -->
  864.  
  865.  
  866.         <!-- ============================================== -->
  867.         <!-- ============ ModuleLoadList START ============ -->
  868.         <!-- ============================================== -->
  869.         <xsl:if test="DynamicProperty[@Type='ModuleLoad']">
  870.             <ModuleLoadedList>
  871.                 <xsl:for-each select="DynamicProperty[@Type='ModuleLoad']">
  872.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  873.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  874.                     <xsl:element name="{$ELEMENTNAME2}">
  875.                         <xsl:for-each select="./@*">
  876.                             <xsl:if test="name()!=$TYPE2">
  877.                                 <xsl:copy />
  878.                             </xsl:if>
  879.                         </xsl:for-each>
  880.                     </xsl:element>
  881.                 </xsl:for-each>
  882.             </ModuleLoadedList>
  883.         </xsl:if>
  884.         <!-- ============================================== -->
  885.         <!-- ============= ModuleLoadList END ============= -->
  886.         <!-- ============================================== -->
  887.  
  888.  
  889.         <!-- ============================================== -->
  890.         <!-- ========== RegistryAccessList START ========== -->
  891.         <!-- ============================================== -->
  892.         <xsl:if test="DynamicProperty[@Type='RegistryAccess']">
  893.             <RegistryAccessList>
  894.                 <xsl:for-each select="DynamicProperty[@Type='RegistryAccess']">
  895.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  896.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  897.                     <xsl:element name="{$ELEMENTNAME2}">
  898.                         <xsl:for-each select="./@*">
  899.                             <xsl:if test="name()!=$TYPE2">
  900.                                 <xsl:copy />
  901.                             </xsl:if>
  902.                         </xsl:for-each>
  903.                     </xsl:element>
  904.                 </xsl:for-each>
  905.             </RegistryAccessList>
  906.         </xsl:if>
  907.         <!-- ============================================== -->
  908.         <!-- =========== RegistryAccessList END =========== -->
  909.         <!-- ============================================== -->
  910.  
  911.  
  912.         <!-- ============================================== -->
  913.         <!-- ============ UacceEventList START ============ -->
  914.         <!-- ============================================== -->
  915.         <xsl:if test="DynamicProperty[contains(string(@Type), 'Uacce')]">
  916.             <UacceEventList>
  917.  
  918.                 <!-- ============================================== -->
  919.                 <!-- ======== UacceProcessElevation START ========= -->
  920.                 <!-- ============================================== -->
  921.                 <xsl:for-each select="DynamicProperty[@Type='UacceProcessElevation']">
  922.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  923.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  924.                     <xsl:element name="{$ELEMENTNAME2}">
  925.                         <xsl:for-each select="./@*">
  926.                             <xsl:if test="name()!=$TYPE2">
  927.                                 <xsl:copy />
  928.                             </xsl:if>
  929.                         </xsl:for-each>
  930.                     </xsl:element>
  931.                 </xsl:for-each>
  932.  
  933.                 <!-- ============================================== -->
  934.                 <!-- ======== UacceFileVirtualization START ======= -->
  935.                 <!-- ============================================== -->
  936.                 <xsl:for-each select="DynamicProperty[@Type='UacceFileVirtualization']">
  937.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  938.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  939.                     <xsl:element name="{$ELEMENTNAME2}">
  940.                         <xsl:for-each select="./@*">
  941.                             <xsl:if test="name()!=$TYPE2">
  942.                                 <xsl:copy />
  943.                             </xsl:if>
  944.                         </xsl:for-each>
  945.                     </xsl:element>
  946.                 </xsl:for-each>
  947.  
  948.  
  949.                 <!-- ============================================== -->
  950.                 <!-- ========= UacceFileRestriction START ========= -->
  951.                 <!-- ============================================== -->
  952.                 <xsl:for-each select="DynamicProperty[@Type='UacceFileRestriction']">
  953.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  954.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  955.                     <xsl:element name="{$ELEMENTNAME2}">
  956.                         <xsl:for-each select="./@*">
  957.                             <xsl:if test="name()!=$TYPE2">
  958.                                 <xsl:copy />
  959.                             </xsl:if>
  960.                         </xsl:for-each>
  961.                     </xsl:element>
  962.                 </xsl:for-each>
  963.  
  964.  
  965.                 <!-- ============================================== -->
  966.                 <!-- ====== UacceFileOpenRestriction START ======== -->
  967.                 <!-- ============================================== -->
  968.                 <xsl:for-each select="DynamicProperty[@Type='UacceFileOpenRestriction']">
  969.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  970.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  971.                     <xsl:element name="{$ELEMENTNAME2}">
  972.                         <xsl:for-each select="./@*">
  973.                             <xsl:if test="name()!=$TYPE2">
  974.                                 <xsl:copy />
  975.                             </xsl:if>
  976.                         </xsl:for-each>
  977.                     </xsl:element>
  978.                 </xsl:for-each>
  979.  
  980.  
  981.                 <!-- ============================================== -->
  982.                 <!-- ====== UacceRegistryVirtualization START ===== -->
  983.                 <!-- ============================================== -->
  984.                 <xsl:for-each select="DynamicProperty[@Type='UacceRegistryVirtualization']">
  985.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  986.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  987.                     <xsl:element name="{$ELEMENTNAME2}">
  988.                         <xsl:for-each select="./@*">
  989.                             <xsl:if test="name()!=$TYPE2">
  990.                                 <xsl:copy />
  991.                             </xsl:if>
  992.                         </xsl:for-each>
  993.                     </xsl:element>
  994.                 </xsl:for-each>
  995.  
  996.  
  997.                 <!-- ============================================== -->
  998.                 <!-- ====== UacceRegistryRestriction START ======== -->
  999.                 <!-- ============================================== -->
  1000.                 <xsl:for-each select="DynamicProperty[@Type='UacceRegistryRestriction']">
  1001.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  1002.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  1003.                     <xsl:element name="{$ELEMENTNAME2}">
  1004.                         <xsl:for-each select="./@*">
  1005.                             <xsl:if test="name()!=$TYPE2">
  1006.                                 <xsl:copy />
  1007.                             </xsl:if>
  1008.                         </xsl:for-each>
  1009.                     </xsl:element>
  1010.                 </xsl:for-each>
  1011.  
  1012.  
  1013.                 <!-- ============================================== -->
  1014.                 <!-- ===== UacceRegistryOpenRestriction START ===== -->
  1015.                 <!-- ============================================== -->
  1016.                 <xsl:for-each select="DynamicProperty[@Type='UacceRegistryOpenRestriction']">
  1017.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  1018.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  1019.                     <xsl:element name="{$ELEMENTNAME2}">
  1020.                         <xsl:for-each select="./@*">
  1021.                             <xsl:if test="name()!=$TYPE2">
  1022.                                 <xsl:copy />
  1023.                             </xsl:if>
  1024.                         </xsl:for-each>
  1025.                     </xsl:element>
  1026.                 </xsl:for-each>
  1027.  
  1028.  
  1029.                 <!-- ============================================== -->
  1030.                 <!-- ========= UacceExistingFix START ============= -->
  1031.                 <!-- ============================================== -->
  1032.                 <xsl:for-each select="DynamicProperty[@Type='UacceExistingFix']">
  1033.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  1034.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  1035.                     <xsl:element name="{$ELEMENTNAME2}">
  1036.                         <xsl:for-each select="./@*">
  1037.                             <xsl:if test="name()!=$TYPE2">
  1038.                                 <xsl:copy />
  1039.                             </xsl:if>
  1040.                         </xsl:for-each>
  1041.                     </xsl:element>
  1042.                 </xsl:for-each>
  1043.  
  1044.  
  1045.                 <!-- ============================================== -->
  1046.                 <!-- ======== UacceIniRedirection START =========== -->
  1047.                 <!-- ============================================== -->
  1048.                 <xsl:for-each select="DynamicProperty[@Type='UacceIniRedirection']">
  1049.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  1050.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  1051.                     <xsl:element name="{$ELEMENTNAME2}">
  1052.                         <xsl:for-each select="./@*">
  1053.                             <xsl:if test="name()!=$TYPE2">
  1054.                                 <xsl:copy />
  1055.                             </xsl:if>
  1056.                         </xsl:for-each>
  1057.                     </xsl:element>
  1058.                 </xsl:for-each>
  1059.  
  1060.  
  1061.                 <!-- =================================================== -->
  1062.                 <!-- ======== UacceRestrictedNamespace START =========== -->
  1063.                 <!-- =================================================== -->
  1064.                 <xsl:for-each select="DynamicProperty[@Type='UacceRestrictedNamespace']">
  1065.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  1066.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  1067.                     <xsl:element name="{$ELEMENTNAME2}">
  1068.                         <xsl:for-each select="./@*">
  1069.                             <xsl:if test="name()!=$TYPE2">
  1070.                                 <xsl:copy />
  1071.                             </xsl:if>
  1072.                         </xsl:for-each>
  1073.                     </xsl:element>
  1074.                 </xsl:for-each>
  1075.  
  1076.  
  1077.             </UacceEventList>
  1078.         </xsl:if>
  1079.         <!-- ============================================== -->
  1080.         <!-- =========== UacceEventList END =============== -->
  1081.         <!-- ============================================== -->
  1082.  
  1083.  
  1084.         <!-- ============================================== -->
  1085.         <!-- ========DeprecationEventList START =========== -->
  1086.         <!-- ============================================== -->
  1087.         <xsl:if test="DynamicProperty[contains(string(@Type), 'Deprecation')]">
  1088.             <DeprecationEventList>
  1089.  
  1090.                 <!-- ============================================== -->
  1091.                 <!-- ========= DeprecationDllType START =========== -->
  1092.                 <!-- ============================================== -->
  1093.                 <xsl:for-each select="DynamicProperty[@Type='DeprecationDllType']">
  1094.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  1095.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  1096.                     <xsl:element name="{$ELEMENTNAME2}">
  1097.                         <xsl:for-each select="./@*">
  1098.                             <xsl:if test="name()!=$TYPE2">
  1099.                                 <xsl:copy />
  1100.                             </xsl:if>
  1101.                         </xsl:for-each>
  1102.                     </xsl:element>
  1103.                 </xsl:for-each>
  1104.  
  1105.                 <!-- ============================================== -->
  1106.                 <!-- ========= DeprecationExeType START =========== -->
  1107.                 <!-- ============================================== -->
  1108.                 <xsl:for-each select="DynamicProperty[@Type='DeprecationExeType']">
  1109.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  1110.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  1111.                     <xsl:element name="{$ELEMENTNAME2}">
  1112.                         <xsl:for-each select="./@*">
  1113.                             <xsl:if test="name()!=$TYPE2">
  1114.                                 <xsl:copy />
  1115.                             </xsl:if>
  1116.                         </xsl:for-each>
  1117.                     </xsl:element>
  1118.                 </xsl:for-each>
  1119.  
  1120.                 <!-- ============================================== -->
  1121.                 <!-- ========= DeprecationRegType START =========== -->
  1122.                 <!-- ============================================== -->
  1123.                 <xsl:for-each select="DynamicProperty[@Type='DeprecationRegType']">
  1124.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  1125.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  1126.                     <xsl:element name="{$ELEMENTNAME2}">
  1127.                         <xsl:for-each select="./@*">
  1128.                             <xsl:if test="name()!=$TYPE2">
  1129.                                 <xsl:copy />
  1130.                             </xsl:if>
  1131.                         </xsl:for-each>
  1132.                     </xsl:element>
  1133.                 </xsl:for-each>
  1134.  
  1135.                 <!-- ============================================== -->
  1136.                 <!-- ========= DeprecationApiType START =========== -->
  1137.                 <!-- ============================================== -->
  1138.                 <xsl:for-each select="DynamicProperty[@Type='DeprecationApiType']">
  1139.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  1140.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  1141.                     <xsl:element name="{$ELEMENTNAME2}">
  1142.                         <xsl:for-each select="./@*">
  1143.                             <xsl:if test="name()!=$TYPE2">
  1144.                                 <xsl:copy />
  1145.                             </xsl:if>
  1146.                         </xsl:for-each>
  1147.                     </xsl:element>
  1148.                 </xsl:for-each>
  1149.  
  1150.             </DeprecationEventList>
  1151.         </xsl:if>
  1152.         <!-- ============================================== -->
  1153.         <!-- ====== Deprecation EventList END ============= -->
  1154.         <!-- ============================================== -->
  1155.  
  1156.  
  1157.         <!-- =========================================== -->
  1158.         <!-- ============ GinaDllList START ============ -->
  1159.         <!-- =========================================== -->
  1160.         <xsl:if test="DynamicProperty[contains(string(@Type), 'GinaDll')]">
  1161.             <GinaDllList>
  1162.  
  1163.                 <!-- ================================ -->
  1164.                 <!-- ======== GinaDll START ========= -->
  1165.                 <!-- ================================ -->
  1166.                 <xsl:for-each select="DynamicProperty[@Type='GinaDll']">
  1167.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  1168.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  1169.                     <xsl:element name="{$ELEMENTNAME2}">
  1170.                         <xsl:for-each select="./@*">
  1171.                             <xsl:if test="name()!=$TYPE2">
  1172.                                 <xsl:copy />
  1173.                             </xsl:if>
  1174.                         </xsl:for-each>
  1175.                     </xsl:element>
  1176.                 </xsl:for-each>
  1177.  
  1178.  
  1179.             </GinaDllList>
  1180.         </xsl:if>
  1181.         <!-- =========================================== -->
  1182.         <!-- ============ GinaDllList END ============== -->
  1183.         <!-- =========================================== -->
  1184.  
  1185.  
  1186.         <!-- ============================================ -->
  1187.         <!-- ============ Session0List START ============ -->
  1188.         <!-- ============================================ -->
  1189.         <xsl:if test="DynamicProperty[contains(string(@Type), 'Service')]">
  1190.             <Session0List>
  1191.  
  1192.                 <!-- =========================================== -->
  1193.                 <!-- ======== ServiceInteractive START ========= -->
  1194.                 <!-- =========================================== -->
  1195.                 <xsl:for-each select="DynamicProperty[@Type='ServiceInteractive']">
  1196.                     <xsl:variable name="ELEMENTNAME2" select="./@Type" />
  1197.                     <xsl:variable name="TYPE2" select="name(./@Type)" />
  1198.                     <xsl:element name="{$ELEMENTNAME2}">
  1199.                         <xsl:for-each select="./@*">
  1200.                             <xsl:if test="name()!=$TYPE2">
  1201.                                 <xsl:copy />
  1202.                             </xsl:if>
  1203.                         </xsl:for-each>
  1204.                     </xsl:element>
  1205.                 </xsl:for-each>
  1206.  
  1207.  
  1208.             </Session0List>
  1209.         </xsl:if>
  1210.         <!-- ============================================ -->
  1211.         <!-- ============ Session0List END ============== -->
  1212.         <!-- ============================================ -->
  1213.  
  1214.  
  1215.     </DynamicProperties>
  1216. </xsl:if>
  1217. <!-- =========================================== -->
  1218. <!-- =========== DynamicProperty END =========== -->
  1219. <!-- =========================================== -->
  1220.  
  1221.  
  1222.                 </xsl:element>
  1223.             </xsl:for-each>
  1224.  
  1225.     </xsl:if>
  1226. </xsl:template>
  1227. <!-- ========================================================== -->
  1228. <!-- ==== Copy StaticProperty and Dynamic Data Generic END ==== -->
  1229. <!-- ========================================================== -->
  1230.  
  1231.  
  1232.  
  1233.  
  1234. <!-- ====================================== -->
  1235. <!-- ========== SystemList START ========== -->
  1236. <!-- ====================================== -->
  1237. <xsl:template name="CommonSystemList">
  1238. <SystemList>
  1239.     <!-- =========================================== -->
  1240.     <!-- ========== PhysicalMachine START ========== -->
  1241.     <!-- =========================================== -->
  1242.     <xsl:element name="PhysicalMachine">
  1243.  
  1244.         <xsl:attribute name="PhysicalMacAddress">
  1245.             <xsl:value-of select="//SystemList/NetworkInfo/NIC/@MacAddress" />
  1246.         </xsl:attribute>
  1247.  
  1248.         <xsl:attribute name="SmsGuid">
  1249.             <xsl:value-of select="//SystemList/NetworkInfo/@SmsGuid" />
  1250.         </xsl:attribute>
  1251.  
  1252.         <xsl:attribute name="SmsHwId">
  1253.             <xsl:value-of select="//SystemList/NetworkInfo/@SmsHwId" />
  1254.         </xsl:attribute>
  1255.  
  1256.         <xsl:attribute name="Ram">
  1257.             <xsl:value-of select="//SystemList/HardwareInfo/MemoryInfo/@Ram" />
  1258.         </xsl:attribute>
  1259.  
  1260.         <xsl:attribute name="PageFile">
  1261.             <xsl:value-of select="//SystemList/HardwareInfo/MemoryInfo/@PageFile" />
  1262.         </xsl:attribute>
  1263.  
  1264.         <xsl:attribute name="Virtual">
  1265.             <xsl:value-of select="//SystemList/HardwareInfo/MemoryInfo/@Virtual" />
  1266.         </xsl:attribute>
  1267.  
  1268.         <xsl:attribute name="AssetTag">
  1269.             <xsl:value-of select="//SystemList/ChassisInfo/@AssetTag" />
  1270.         </xsl:attribute>
  1271.  
  1272.         <xsl:attribute name="SerialNumber">
  1273.             <xsl:value-of select="//SystemList/ChassisInfo/@SerialNumber" />
  1274.         </xsl:attribute>
  1275.  
  1276.         <xsl:attribute name="ChassisVendor">
  1277.             <xsl:value-of select="//SystemList/ChassisInfo/@Vendor" />
  1278.         </xsl:attribute>
  1279.  
  1280.         <xsl:attribute name="ProcessorName">
  1281.             <xsl:value-of select="//SystemList/HardwareInfo/ProcessorInfo/@Name" />
  1282.         </xsl:attribute>
  1283.  
  1284.         <xsl:attribute name="Mhz">
  1285.             <xsl:value-of select="//SystemList/HardwareInfo/ProcessorInfo/@Mhz" />
  1286.         </xsl:attribute>
  1287.  
  1288.         <xsl:attribute name="ProcessorArchitecture">
  1289.             <xsl:value-of select="//SystemList/HardwareInfo/ProcessorInfo/@Architecture" />
  1290.         </xsl:attribute>
  1291.  
  1292.         <xsl:attribute name="ProcessorVendor">
  1293.             <xsl:value-of select="//SystemList/HardwareInfo/ProcessorInfo/@Vendor" />
  1294.         </xsl:attribute>
  1295.  
  1296.  
  1297.         <!-- ========================================== -->
  1298.         <!-- ============== OsInfo START ============== -->
  1299.         <!-- ========================================== -->
  1300.         <xsl:element name="OsInfo">
  1301.             <xsl:variable name="MAJORVERSION" select="//SystemList/OsInfo/@MajorVersion" />
  1302.             <xsl:variable name="MINORVERSION" select="//SystemList/OsInfo/@MinorVersion" />
  1303.             <xsl:variable name="SERVICEMAJOR" select="//SystemList/OsInfo/@ServicePackMajor" />
  1304.             <xsl:attribute name="Id">
  1305.                 <xsl:value-of select="concat($MAJORVERSION, '.', $MINORVERSION, '.', $SERVICEMAJOR)" />
  1306.             </xsl:attribute>
  1307.  
  1308.             <xsl:attribute name="MacAddress">
  1309.                 <xsl:value-of select="//SystemList/NetworkInfo/NIC/@MacAddress" />
  1310.             </xsl:attribute>
  1311.  
  1312.             <xsl:attribute name="MachineName">
  1313.                 <xsl:value-of select="//SystemList/NetworkInfo/@MachineName" />
  1314.             </xsl:attribute>
  1315.  
  1316.             <xsl:attribute name="DomainName">
  1317.                 <xsl:value-of select="//SystemList/NetworkInfo/@Domain" />
  1318.             </xsl:attribute>
  1319.  
  1320.             <xsl:attribute name="SystemDirectory">
  1321.                 <xsl:value-of select="//SystemList/OsInfo/@SystemDirectory" />
  1322.             </xsl:attribute>
  1323.  
  1324.             <xsl:attribute name="WindowsDirectory">
  1325.                 <xsl:value-of select="//SystemList/OsInfo/@WindowsDirectory" />
  1326.             </xsl:attribute>
  1327.  
  1328.             <xsl:attribute name="BuildNumber">
  1329.                 <xsl:value-of select="//SystemList/OsInfo/@BuildNumber" />
  1330.             </xsl:attribute>
  1331.  
  1332.             <xsl:attribute name="MajorVersion">
  1333.                 <xsl:value-of select="//SystemList/OsInfo/@MajorVersion" />
  1334.             </xsl:attribute>
  1335.  
  1336.             <xsl:attribute name="MinorVersion">
  1337.                 <xsl:value-of select="//SystemList/OsInfo/@MinorVersion" />
  1338.             </xsl:attribute>
  1339.  
  1340.             <xsl:attribute name="ServicePackMajor">
  1341.                 <xsl:value-of select="//SystemList/OsInfo/@ServicePackMajor" />
  1342.             </xsl:attribute>
  1343.  
  1344.             <xsl:attribute name="ServicePackMinor">
  1345.                 <xsl:value-of select="//SystemList/OsInfo/@ServicePackMinor" />
  1346.             </xsl:attribute>
  1347.         </xsl:element>
  1348.         <!-- ======================================== -->
  1349.         <!-- ============== OsInfo END ============== -->
  1350.         <!-- ======================================== -->
  1351.  
  1352.  
  1353.         <!-- ===================================== -->
  1354.         <!-- ========== IPAddress START ========== -->
  1355.         <!-- ===================================== -->
  1356.         <IpAddress>
  1357.             <xsl:for-each select="//SystemList/NetworkInfo/IP">
  1358.                 <xsl:copy-of select="." />
  1359.             </xsl:for-each>
  1360.         </IpAddress>
  1361.         <!-- =================================== -->
  1362.         <!-- ========== IPAddress END ========== -->
  1363.         <!-- =================================== -->
  1364.  
  1365.  
  1366.         <!-- ===================================== -->
  1367.         <!-- ======== CustomValues START ========= -->
  1368.         <!-- ===================================== -->
  1369.         <xsl:if test="//SystemList/CustomValues/CustomValue">
  1370.             <CustomValues>
  1371.                 <xsl:copy-of select="//SystemList/CustomValues/CustomValue[1]" />
  1372.             </CustomValues>
  1373.         </xsl:if>
  1374.         <!-- ===================================== -->
  1375.         <!-- ========= CustomValues END ========== -->
  1376.         <!-- ===================================== -->
  1377.  
  1378.  
  1379.     </xsl:element>
  1380.     <!-- ========================================= -->
  1381.     <!-- ========== PhysicalMachine END ========== -->
  1382.     <!-- ========================================= -->
  1383.  
  1384.  
  1385.     <!-- ====================================== -->
  1386.     <!-- ============ Devices START =========== -->
  1387.     <!-- ====================================== -->
  1388.     <xsl:element name="Devices">
  1389.         <xsl:for-each select="//SystemList/HardwareInfo/VideoInfo">
  1390.             <xsl:copy-of select="."/>
  1391.         </xsl:for-each>
  1392.         <xsl:for-each select="//SystemList/HardwareInfo/DiskInfo">
  1393.             <xsl:copy-of select="."/>
  1394.         </xsl:for-each>
  1395.  
  1396.         <!-- ============================================== -->
  1397.         <!-- ========== SystemSpec SECTION START ========== -->
  1398.         <!-- ============================================== -->
  1399.         <xsl:if test="//SystemList/HardwareInfo/SystemSpec">
  1400.         <xsl:element name="SystemSpec">
  1401.  
  1402.             <xsl:attribute name="MacAddress">
  1403.                 <xsl:value-of select="//SystemList/NetworkInfo/NIC/@MacAddress" />
  1404.             </xsl:attribute>
  1405.  
  1406.             <!-- =========================================================== -->
  1407.             <!-- == BIOS INFORMATION SECTION                              == -->
  1408.             <!-- =========================================================== -->
  1409.             <xsl:element name="BiosInfo">
  1410.  
  1411.                 <xsl:attribute name="Manufacturer">
  1412.                     <xsl:value-of select="//SystemList/HardwareInfo/SystemSpec/PingBackInfo/@manufacturer" />
  1413.                 </xsl:attribute>
  1414.  
  1415.                 <xsl:attribute name="Model">
  1416.                     <xsl:value-of select="//SystemList/HardwareInfo/SystemSpec/PingBackInfo/@model" />
  1417.                 </xsl:attribute>
  1418.  
  1419.                 <xsl:attribute name="BiosName">
  1420.                     <xsl:value-of select="//SystemList/HardwareInfo/SystemSpec/PingBackInfo/@biosName" />
  1421.                 </xsl:attribute>
  1422.  
  1423.                 <xsl:attribute name="BiosVersion">
  1424.                     <xsl:value-of select="//SystemList/HardwareInfo/SystemSpec/PingBackInfo/@biosVersion" />
  1425.                 </xsl:attribute>
  1426.  
  1427.                 <xsl:attribute name="BiosDate">
  1428.                     <xsl:value-of select="//SystemList/HardwareInfo/SystemSpec/PingBackInfo/@biosDate" />
  1429.                 </xsl:attribute>
  1430.  
  1431.             </xsl:element>
  1432.  
  1433.             <!-- =========================================================== -->
  1434.             <!-- == Exclude any of the following:                         == -->
  1435.             <!-- == Provider="Microsoft" and Class="System"               == -->
  1436.             <!-- == Provider="Microsoft" and Model starts with "Generic"  == -->
  1437.             <!-- == Manufacturer="Microsoft" and Provider="Microsoft"     == -->
  1438.             <!-- == Manufacturer starts with "(Standard"                  == -->
  1439.             <!-- == InstalledDriver element without matchingID attribute  == -->
  1440.             <!-- ==                                                       == -->
  1441.             <!-- == HWID starts with "ACPI\PnP"                           == -->
  1442.             <!-- == HWID starts with "ACPI\SYN"                           == -->
  1443.             <!-- == HWID contains "Genuine"                               == -->
  1444.             <!-- == HWID contains "Authen"                                == -->
  1445.             <!-- == HWID contains "Virtual_CPU"                           == -->
  1446.             <!-- =========================================================== -->
  1447.             <xsl:for-each select="//Device[
  1448.                                         (./HWID)                                                                 and
  1449.                                         not(  contains(translate(HWID,$LOWERCASE,$UPPERCASE), 'GENUINE')      )  and
  1450.                                         not(  contains(translate(HWID,$LOWERCASE,$UPPERCASE), 'AUTHEN')       )  and
  1451.                                         not(  contains(translate(HWID,$LOWERCASE,$UPPERCASE), 'VIRTUAL_CPU')  )  and
  1452.                                         not(  starts-with(translate(HWID,$LOWERCASE,$UPPERCASE), 'ACPI\PNP')  )  and
  1453.                                         not(  starts-with(translate(HWID,$LOWERCASE,$UPPERCASE), 'ACPI\SYN')  )
  1454.                                         ]">
  1455.                 <xsl:if test="InstalledDriver[not(  @provider='Microsoft' and @class='System'                  )]">
  1456.                 <xsl:if test="InstalledDriver[not(  @provider='Microsoft' and @manufacturer='Microsoft'        )]">
  1457.                 <xsl:if test="InstalledDriver[not(  @provider='Microsoft' and starts-with(@model, 'Generic ')  )]">
  1458.                 <xsl:if test="InstalledDriver[not(  starts-with(@manufacturer, '(Standard')                    )]">
  1459.                 <xsl:if test="InstalledDriver[@matchingID]">
  1460.  
  1461.                     <xsl:element name="Device">
  1462.  
  1463.                         <xsl:attribute name="Id">
  1464.                             <xsl:value-of select="./HWID[1]" />
  1465.                         </xsl:attribute>
  1466.  
  1467.                         <xsl:for-each select="./HWID">
  1468.                             <xsl:element name="HwId">
  1469.                                 <xsl:attribute name="Id">
  1470.                                     <xsl:value-of select="." />
  1471.                                 </xsl:attribute>
  1472.  
  1473.                                 <xsl:attribute name="Sequence">
  1474.                                     <xsl:value-of select="position()-1" />
  1475.                                 </xsl:attribute>
  1476.  
  1477.                             </xsl:element>
  1478.                         </xsl:for-each>
  1479.  
  1480.                         <xsl:for-each select="./InstalledDriver">
  1481.                             <xsl:element name="InstalledDriver">
  1482.                                 <xsl:attribute name="MatchingId">
  1483.                                     <xsl:value-of select="@matchingID" />
  1484.                                 </xsl:attribute>
  1485.  
  1486.                                 <xsl:attribute name="DriverVerDate">
  1487.                                     <xsl:value-of select="@driverVerDate" />
  1488.                                 </xsl:attribute>
  1489.  
  1490.                                 <xsl:attribute name="DriverVerVersion">
  1491.                                     <xsl:value-of select="@driverVerVersion" />
  1492.                                 </xsl:attribute>
  1493.  
  1494.                                 <xsl:attribute name="Class">
  1495.                                     <xsl:value-of select="@class" />
  1496.                                 </xsl:attribute>
  1497.  
  1498.                                 <xsl:attribute name="Manufacturer">
  1499.                                     <xsl:value-of select="@manufacturer" />
  1500.                                 </xsl:attribute>
  1501.  
  1502.                                 <xsl:attribute name="Provider">
  1503.                                     <xsl:value-of select="@provider" />
  1504.                                 </xsl:attribute>
  1505.  
  1506.                                 <xsl:attribute name="Model">
  1507.                                     <xsl:value-of select="@model" />
  1508.                                 </xsl:attribute>
  1509.  
  1510.                             </xsl:element>
  1511.                         </xsl:for-each>
  1512.  
  1513.                     </xsl:element>
  1514.  
  1515.                 </xsl:if>
  1516.                 </xsl:if>
  1517.                 </xsl:if>
  1518.                 </xsl:if>
  1519.                 </xsl:if>
  1520.  
  1521.             </xsl:for-each>
  1522.  
  1523.         </xsl:element>
  1524.         </xsl:if>
  1525.         <!-- ============================================ -->
  1526.         <!-- ========== SystemSpec SECTION END ========== -->
  1527.         <!-- ============================================ -->
  1528.  
  1529.     </xsl:element>
  1530.     <!-- ====================================== -->
  1531.     <!-- ============ Devices END ============= -->
  1532.     <!-- ====================================== -->
  1533.  
  1534.  
  1535. </SystemList>
  1536. </xsl:template>
  1537. <!-- ====================================== -->
  1538. <!-- ========== SystemList END ============ -->
  1539. <!-- ====================================== -->
  1540.  
  1541.  
  1542.  
  1543.  
  1544. </xsl:stylesheet>
  1545.  
  1546.